<?php

/**
 * Модель админ содержит все методы для работы 
 * в админке: удаление, редактирование, просмотр,
 * добавление пользователей.
 *
 * 
 */
class Back_Model_Admin extends Zend_Db_Table_Abstract {

    protected $_name = 'advertisers';

    /**
     * Выборка всех рекламодателей
     * @return array 
     */
    public function getAllAdvers() {
        $db = $this->getDefaultAdapter();
        $select = $db->select()
                ->from(array('a' => 'advertisers'))
                ->join(array('s' => 'status_users'), 'a.id_status = s.id', array('s.name'));
        return $db->fetchAll($select);
    }

    /**
     * Блокировка админом выбранного юзера
     * @param int $id
     * @param array $data 
     */
    public function blockSelectAdver($id, $data) {
        $this->update($data, 'id =' . intval($id));
    }

    /**
     * Разблокировка админом выбранного юзера
     * @param int $id
     * @param array $data 
     */
    public function unblockSelectAdver($id, $data) {
        $this->update($data, 'id =' . intval($id));
    }

    /**
     * Подтверждение регистрации выбранного юзера админом
     * @param int $id
     * @param array $data 
     */
    public function confirmSelectAdver($id, $data) {
        $this->update($data, 'id =' . intval($id));
    }

    /**
     * Удаление админом выбранного юзера
     * @param int $id 
     */
    public function deleteSelectAdver($id) {
        $this->delete('id =' . intval($id));
    }

    /**
     * Выборка данных указанного юзера
     * @param int $id
     * @return array 
     */
    public function getSelectAdver($id) {
        $db = $this->getDefaultAdapter();
        $select = $db->select()
                     ->from(array('a' => 'advertisers'))
                     ->join(array('s' => 'status_users'),
                            'a.id_status = s.id',array('s.name'))
                     ->join(array('ss' => 'spec_status'),
                            'a.id_spec_status = ss.id',array('ss.status'))                     
                     ->where('a.id =?', intval($id));
        return $db->fetchRow($select);
    }

    /**
     * Выборка не прошедших подтверждение регистрации
     * рекламодателей
     * @return array 
     */
    public function getPendingAdvers() {
        $db = $this->getDefaultAdapter();
        $select = $db->select()
                     ->from(array('a' => 'advertisers'))
                     ->join(array('r' => 'roles'),
                             'a.id_role = r.id',array('role' => 'r.name')) 
                     ->where('a.id_status = 2');
        return $db->fetchAll($select);                        
    }

    /**
     * Выборка не прошедших подтверждение регистрации
     * публикаторов
     * @return array 
     */
    public function getPendingPubs() {
        $db = $this->getDefaultAdapter();
        $select = $db->select()
                     ->from(array('p' => 'publishers'))
                     ->join(array('r' => 'roles'),
                             'p.id_role = r.id',array('role' => 'r.name'))                     
                     ->where('p.id_status = 2');
        return $db->fetchAll($select);                        
    }

    /**
     * Выборка всех публикаторов
     * @return type 
     */
    public function getAllPublishers() {
        $db = $this->getDefaultAdapter();
        $select = $db->select()
                ->from(array('p' => 'publishers'))
                ->join(array('s' => 'status_users'), 'p.id_status = s.id', array('s.name'));
        return $db->fetchAll($select);
    }
    
    /**
     * Блокировка админом выбранного публикатора
     * @param int $id
     * @param array $data 
     */
    public function blockSelectPublisher($id, $data) {
        $this->_name = 'publishers';
        $this->update($data, 'id =' . intval($id));
    }
    
    /**
     * Разблокировка админом выбранного публикатора
     * @param int $id
     * @param array $data 
     */
    public function unblockSelectPublisher($id, $data) {
        $this->_name = 'publishers';
        $this->update($data, 'id =' . intval($id));
    }

    /**
     * Подтверждение регистрации админом выбранного публикатора
     * @param int $id
     * @param array $data 
     */
    public function confirmSelectPublisher($id, $data) {
        $this->_name = 'publishers';
        $this->update($data, 'id =' . intval($id));
    }

    /**
     * Удаление админом выбранного публикатора
     * @param int $id 
     */
    public function deleteSelectPublisher($id) {
        $this->_name = 'publishers';
        $this->delete('id =' . intval($id));
    }
    
    /**
     * Выборка данных указанного публикатора
     * @param int $id
     * @return array 
     */
    public function getSelectPublisher($id) {
        $db = $this->getDefaultAdapter();
        $select = $db->select()
                ->from(array('p' => 'publishers'))
                ->join(array('s' => 'status_users'), 'p.id_status = s.id', array('s.name'))
                ->join(array('ss' => 'spec_status'), 'p.id_spec_status = ss.id', array('ss.status'))
                ->where('p.id =?', intval($id));
        return $db->fetchRow($select);
    }

}

?>
